Checked 16 well barcoded second strand primers. Mapping rates and background looks good. With a view to future time course experiments with suspension cells, check the compatibility of various lysis buffers.
Test a variety of lysis buffers for compatibility with TurboCaptureSeq
SUPERase-In RNase inhibitor was used instead of RNaseOUT.
After reverse transcription, washed twice with 180 µL of 10 mM Tris before removing all remaining liquid.
Piper only used 8 well barcoded primers instead of the intended 16, so instead of pairs of columns as a replicate for a total of 4 replicates, now have individual columns as replicates for a total of 8 replicates:
Stopped after 0.8x SPRI cleanup and eluted in 20 µL.
Following PCR 2, performed the 2 sided selection.
Performed dsDNA HS Qubit for both PCR1 and PCR2 samples using 2 ÎĽL of sample as per standard protocol.
Replicates 2, 3, 5, 6, 7, 8 were diluted to be between1 - 5 ng/ÎĽL for the D5000 Tape.
SCE object in generate in 1A_generateSCE_reads notebook.
Plot the QC metrics.
Plot on plate map
Something went wrong with replicate 2B but otherwise looks reasonable. Not much difference between
plt1 <- ggplot(tb,
aes(x = Buffer, y= sum, colour = Sample)) +
geom_point() +
ylab("Library Size (UMIs)") +
xlab("Lysis buffer") +
scale_y_continuous(trans='log10') +
annotation_logticks(base = 10, sides = "l") +
scale_colour_Publication()
plt1Library size in deduplicated UMIs
plt2 <- ggplot(tb,
aes(x = Buffer, y= sum, colour = Sample, label = Replicate)) +
geom_text() +
ylab("Library Size (UMIs)") +
xlab("Lysis buffer") +
scale_fill_brewer(palette = "Dark2")
plt2Library size in deduplicated UMIs
plt3 <- ggplot(tb,
aes(x = Buffer, y= detected, colour = Sample, label=Replicate)) +
geom_text() +
ylab("Genes detected") +
xlab("Lysis buffer") +
scale_fill_brewer(palette = "Dark2")
plt3Number of detected genes
plt4 <- ggplot(tb,
aes(x = detected+1, y= sum+1, colour = Buffer, label=Replicate)) +
geom_text() +
ylab("Library size (UMIs)") +
xlab("Genes detected") +
scale_y_continuous(trans='log10') + scale_x_continuous(trans='log10') +
annotation_logticks(base = 10, sides = "bl") +
scale_colour_brewer(palette = "Dark2")
plt4UMIs versus genes
I ordered an inital 10nt UMI sequence in the TSO, 1,048,576 molecules. Check this is not saturated.
human <- scater::plotHighestExprs(altExp(sce, "Human"), n=10, colour_cells_by = "Sample") + theme_Publication()
human## AATGTATCAAAGTGTGTG AATGTATCCAGAGTCCTT AATGTATCCATTTGCGAT AATGTATCCCACGTCTAC
## 321 61516 329 34676
## AATGTATCGAGTTATGTG AATGTATCGCAACGACTC AATGTATCGCATTGATCT AATGTATCTGCACAGAGA
## 19521 1098 541 38545
## CCGGCAACAAAGTGTGTG CCGGCAACCAGAGTCCTT CCGGCAACCATTTGCGAT CCGGCAACCCACGTCTAC
## 509 52897 184 31047
## CCGGCAACGAGTTATGTG CCGGCAACGCAACGACTC CCGGCAACGCATTGATCT CCGGCAACTGCACAGAGA
## 18829 1716 729 33804
## CGGCTGGAAAAGTGTGTG CGGCTGGACAGAGTCCTT CGGCTGGACATTTGCGAT CGGCTGGACCACGTCTAC
## 45 28054 59 9244
## CGGCTGGAGAGTTATGTG CGGCTGGAGCAACGACTC CGGCTGGAGCATTGATCT CGGCTGGATGCACAGAGA
## 6742 176 143 11567
## CTCCTTTAGAGTTATGTG CTCCTTTATGCACAGAGA GAGACGCAAAAGTGTGTG GAGACGCACAGAGTCCTT
## 0 0 166 46230
## GAGACGCACATTTGCGAT GAGACGCACCACGTCTAC GAGACGCAGAGTTATGTG GAGACGCAGCAACGACTC
## 193 33026 20440 1067
## GAGACGCAGCATTGATCT GAGACGCATGCACAGAGA GTCCCATCAAAGTGTGTG GTCCCATCCAGAGTCCTT
## 559 33313 198 53498
## GTCCCATCCATTTGCGAT GTCCCATCCCACGTCTAC GTCCCATCGAGTTATGTG GTCCCATCGCAACGACTC
## 198 34929 18678 1115
## GTCCCATCGCATTGATCT GTCCCATCTGCACAGAGA TTCACACCAAAGTGTGTG TTCACACCCAGAGTCCTT
## 551 29867 43 21667
## TTCACACCCATTTGCGAT TTCACACCCCACGTCTAC TTCACACCGAGTTATGTG TTCACACCGCAACGACTC
## 66 11774 5074 5
## TTCACACCGCATTGATCT TTCACACCTGCACAGAGA TTGCCCGTAAAGTGTGTG TTGCCCGTCAGAGTCCTT
## 157 12597 245 64226
## TTGCCCGTCATTTGCGAT TTGCCCGTCCACGTCTAC TTGCCCGTGAGTTATGTG TTGCCCGTGCAACGACTC
## 298 35281 17522 988
## TTGCCCGTGCATTGATCT TTGCCCGTTGCACAGAGA
## 779 43029
I am far from saturated sequencing here I think. Top count for MT-RNR2 is 64,226
Some molecular swapping but much cleaner than minibulk
plt5 <- ggplot(data=tb, aes(y=subsets_Human_sum, x=subsets_Mouse_sum, colour=Sample)) +
geom_point() +
scale_colour_brewer(type="qualitative", palette = "Dark2") +
xlab("Mouse counts") + ylab("Human Counts")
plt5plt5 <- ggplot(data=tb, aes(y=subsets_Human_sum, x=subsets_Mouse_sum, colour=Sample, label=Buffer)) +
geom_text() +
scale_colour_brewer(type="qualitative", palette = "Dark2") +
xlab("Mouse counts") + ylab("Human Counts")
plt5plt6 <- ggplot(data=tb, aes(y=subsets_Human_sum+1, x=subsets_Mouse_sum+1, shape=Sample, colour=Buffer)) +
geom_point() +
scale_colour_brewer(type="qualitative", palette = "Dark2") +
xlab("Mouse counts") + ylab("Human Counts") +
scale_x_continuous(trans='log10') + scale_y_continuous(trans='log10') +
annotation_logticks(base = 10, sides = "bl")
plt62x DNA / RNA shield doesn’t work very well, probably salt concentration. Same for Qiagen buffer RLT
## R version 4.4.1 (2024-06-14)
## Platform: x86_64-pc-linux-gnu
## Running under: Red Hat Enterprise Linux 9.4 (Plow)
##
## Matrix products: default
## BLAS: /stornext/System/data/software/rhel/9/base/tools/R/4.4.1/lib64/R/lib/libRblas.so
## LAPACK: /stornext/System/data/software/rhel/9/base/tools/R/4.4.1/lib64/R/lib/libRlapack.so; LAPACK version 3.12.0
##
## locale:
## [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
## [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
## [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
## [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
## [9] LC_ADDRESS=C LC_TELEPHONE=C
## [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
##
## time zone: Australia/Melbourne
## tzcode source: system (glibc)
##
## attached base packages:
## [1] grid stats4 stats graphics grDevices utils datasets
## [8] methods base
##
## other attached packages:
## [1] scales_1.3.0 ggthemes_5.1.0
## [3] here_1.0.1 patchwork_1.3.0
## [5] platetools_0.1.7 scater_1.32.1
## [7] scuttle_1.14.0 lubridate_1.9.3
## [9] forcats_1.0.0 stringr_1.5.1
## [11] dplyr_1.1.4 purrr_1.0.2
## [13] readr_2.1.5 tidyr_1.3.1
## [15] tibble_3.2.1 ggplot2_3.5.1
## [17] tidyverse_2.0.0 SingleCellExperiment_1.26.0
## [19] SummarizedExperiment_1.34.0 Biobase_2.64.0
## [21] GenomicRanges_1.56.2 GenomeInfoDb_1.40.1
## [23] IRanges_2.38.1 S4Vectors_0.42.1
## [25] BiocGenerics_0.50.0 MatrixGenerics_1.16.0
## [27] matrixStats_1.4.1
##
## loaded via a namespace (and not attached):
## [1] tidyselect_1.2.1 viridisLite_0.4.2
## [3] farver_2.1.2 vipor_0.4.7
## [5] viridis_0.6.5 fastmap_1.2.0
## [7] digest_0.6.37 rsvd_1.0.5
## [9] timechange_0.3.0 lifecycle_1.0.4
## [11] magrittr_2.0.3 compiler_4.4.1
## [13] rlang_1.1.4 sass_0.4.9
## [15] tools_4.4.1 utf8_1.2.4
## [17] yaml_2.3.10 knitr_1.48
## [19] labeling_0.4.3 S4Arrays_1.4.1
## [21] DelayedArray_0.30.1 RColorBrewer_1.1-3
## [23] abind_1.4-8 BiocParallel_1.38.0
## [25] withr_3.0.1 fansi_1.0.6
## [27] beachmat_2.20.0 colorspace_2.1-1
## [29] cli_3.6.3 rmarkdown_2.28
## [31] crayon_1.5.3 generics_0.1.3
## [33] rstudioapi_0.17.0 httr_1.4.7
## [35] tzdb_0.4.0 DelayedMatrixStats_1.26.0
## [37] ggbeeswarm_0.7.2 cachem_1.1.0
## [39] zlibbioc_1.50.0 parallel_4.4.1
## [41] XVector_0.44.0 vctrs_0.6.5
## [43] Matrix_1.7-0 jsonlite_1.8.9
## [45] BiocSingular_1.20.0 hms_1.1.3
## [47] BiocNeighbors_1.22.0 ggrepel_0.9.6
## [49] irlba_2.3.5.1 beeswarm_0.4.0
## [51] jquerylib_0.1.4 glue_1.8.0
## [53] codetools_0.2-20 stringi_1.8.4
## [55] gtable_0.3.5 UCSC.utils_1.0.0
## [57] ScaledMatrix_1.12.0 munsell_0.5.1
## [59] pillar_1.9.0 htmltools_0.5.8.1
## [61] GenomeInfoDbData_1.2.12 R6_2.5.1
## [63] sparseMatrixStats_1.16.0 rprojroot_2.0.4
## [65] evaluate_1.0.1 lattice_0.22-6
## [67] highr_0.11 bslib_0.8.0
## [69] Rcpp_1.0.13 gridExtra_2.3
## [71] SparseArray_1.4.8 xfun_0.48
## [73] pkgconfig_2.0.3